Python Essentials by Lott Steven F

Python Essentials by Lott Steven F

Author:Lott, Steven F. [Lott, Steven F.]
Language: eng
Format: azw3, epub
Publisher: Packt Publishing
Published: 2015-06-29T16:00:00+00:00


Wait. What just happened? How is this possible?

As a hint, we'll need to search through the code for an object with a hidden, shared state. Earlier, we noted that a default list object would be a problem. This hidden list object is getting reused.

What happens is this:

When the def statement is executed, the expressions that define the parameter defaults are evaluated. This means that a single mutable list object is created as the default object for the collection parameter.

When the more_dice() function is evaluated without an argument for the collection parameter, the one-and-only mutable list object is used as the default object. What's important is that a single mutable object is being reused. If, at any point, we update this object, that mutation applies to all shared uses of the object. Since it's returned by the function, this single list could be assigned to several variables.

When the more_dice() function is evaluated a second time without an argument for the collection parameter, the mutated list object is re-used as the default.



Download



Copyright Disclaimer:
This site does not store any files on its server. We only index and link to content provided by other sites. Please contact the content providers to delete copyright contents if any and email us, we'll remove relevant links or contents immediately.